package pe.com.certicom.ittsa.framework.dat;
 
import java.util.List;
import pe.com.certicom.ittsa.framework.exception.DaoException;

public class DaoHelper {


    public DaoHelper()
    {
    }
    
    @SuppressWarnings("unchecked")
    public static Object dato(String storeProcedure, Class clase, Object parametros[])throws DaoException{
        Object obj;
        ConexionDaoUtil con = null;
        obj = null;
        try{
            con = new ConexionDaoUtil();
            obj = con.dato(storeProcedure, clase, parametros);
        }finally{
            if(con != null)
                con.close();
        }
        return obj;
    }
	
    @SuppressWarnings("unchecked")
    public static Object dato(String storeProcedure, Class clase)throws DaoException{
        ConexionDaoUtil con = null;
        Object obj;
        try{
            con = new ConexionDaoUtil();
            obj = con.dato(storeProcedure, clase);
        }finally{
            con.close();
        }
        return obj;
    }
    
    @SuppressWarnings("unchecked")
    public static List datoLista(String storeProcedure, Class clase, Object parametros[]) throws DaoException {
        ConexionDaoUtil con = null;
        List lista;
        try{
            con = new ConexionDaoUtil();
            lista = con.datoLista(storeProcedure, clase, parametros);
        }finally{
            con.close();
        }
        return lista;
    }
    
    @SuppressWarnings("unchecked")
    public static List datoListaPS(String storeProcedure, Class clase, Object parametros[]) throws DaoException {
        ConexionDaoUtilPosgress con = null;
        List lista;
        try{
            con = new ConexionDaoUtilPosgress();
            lista = con.datoLista(storeProcedure, clase, parametros);
        }finally{
            con.close();
        }
        return lista;
    }
  
    @SuppressWarnings("unchecked")
    public static List datoLista(String storeProcedure, Class clase)throws DaoException{
    	ConexionDaoUtil con = null;
        List lista;
        try {
            con = new ConexionDaoUtil();
            lista = con.datoLista(storeProcedure, clase);
        } finally {
            con.close();
        }
        return lista;
    }
 
    public static String getString(String storeProcedure, Object parametros[]) throws DaoException{
    	ConexionDaoUtil con = null;
        String s;
        try{
            con = new ConexionDaoUtil();
            s = con.tipoString(storeProcedure, parametros);
        }finally{
            if(con != null)
                con.close();
        }
        return s;
    }

    public static Object executeScalar(String storeProcedure, Object parametros[])throws DaoException{
    	ConexionDaoUtil con = null;
        con = new ConexionDaoUtil();
        Object obj = con.executeScalar(storeProcedure, parametros);
      //  con.commit();
        return obj; 
    }
    
    public static ConexionDaoUtil executeScalar1(String storeProcedure, Object parametros[])throws DaoException{
    	ConexionDaoUtil con = null;
        con = new ConexionDaoUtil();
        Object obj = con.executeScalar(storeProcedure, parametros);
      //  con.commit();
        return con; 
    }
    public static Object executeScalar2(ConexionDaoUtil con,String storeProcedure, Object parametros[])throws DaoException{
    	Object obj = con.executeScalar(storeProcedure, parametros);
      //  con.commit();
        return obj; 
    }
    
    public static Object executeScalar(String storeProcedure, Object parametros[],ConexionDaoUtil con)throws DaoException{
        Object obj = con.executeScalar(storeProcedure, parametros);
      //  con.commit();
        return obj; 
    }
    
    public static void execute(String storeProcedure, Object parametros[]) throws DaoException{
        ConexionDaoUtil con = new ConexionDaoUtil();
        con.execute(storeProcedure, parametros);
       // con.commit();
    }
    
    public static void executePS(String storeProcedure, Object parametros[]) throws DaoException{
        ConexionDaoUtilPosgress con = new ConexionDaoUtilPosgress();
        con.execute(storeProcedure, parametros);
       // con.commit();
    }

    public static Object[] execute(String storeProcedure, Object parametros[], int numParametrosOut)throws DaoException{
    	ConexionDaoUtil con = null;
        con = new ConexionDaoUtil();
        Object obj[] = con.execute(storeProcedure, parametros, numParametrosOut);
        con.commit();
        return obj;
    }
    
    public static Object[] executePS(String storeProcedure, Object parametros[], int numParametrosOut)throws DaoException{
    	ConexionDaoUtilPosgress con = null;
        con = new ConexionDaoUtilPosgress();
        Object obj[] = con.execute(storeProcedure, parametros, numParametrosOut);
        con.commit();
        return obj;
    }
    
    @SuppressWarnings("unchecked")
    public static Object[] execute(String storeProcedure, Object parametros[], int numParametrosOut, Class parametrosListSalida[])throws DaoException{
    	ConexionDaoUtil con = null;
        con = new ConexionDaoUtil();
        Object obj[] = con.execute(storeProcedure, parametros, numParametrosOut, parametrosListSalida);
        con.commit();
        return obj;
    }
    
    @SuppressWarnings("unchecked")
    public static Object[] execute(String storeProcedure, Object parametros[], Class parametrosListSalida[])
        throws DaoException
    {
    	ConexionDaoUtil con = null;
        con = new ConexionDaoUtil();
        Object obj[] = con.execute(storeProcedure, parametros, parametrosListSalida);
        con.commit();
        return obj;
    }
  
}
